#ifndef _ANIMATIONLAYER_H_
#define _ANIMATIONLAYER_H_

#include <SECore/Layer.h>
#include <SECore/Signal.h>

namespace SEngine
{
    struct IComponent;
    class AnimationPayload;
    class AnimationLayer : public Layer
    {
    public:
        AnimationLayer(CoreApplication & app);
        virtual ~AnimationLayer() = default;
        virtual std::string Name() override { return "AnimationLayer"; };
        virtual void Attach() override;
        virtual void Update(int delta) override;
    public:
        Signal<IComponent&> SignalAddComponent;
        Signal<IComponent&> SignalRemoveComponent;

    protected:
        void SlotEnabled(bool);
        void SlotAddComponent(IComponent&);
        void SlotRemoveComponent(IComponent&);
        
    private:
        std::vector<AnimationPayload*> m_animPayloads;
    };
} // namespace SEngine


#endif